/**
 * 菜单权限数据转换工具，将扁平结构的数据转换为树形结构的数据
 */
export const transToTree = (list: IPermissions[]) => {
    // 为避免对源数据产生干扰，将参数 list 进行复制
    const copyList: IPermissions[] = JSON.parse(JSON.stringify(list))
    // 结果数组
    const result: IPermissions[] = []
    // Map 对象
    const map = new Map()
    // 将源数据放入到 Map 对象中，以数据项的 id 作为key，以数据项本身作为 value
    copyList.forEach(item => map.set(item.id, item))
  
    // 遍历源数据，将数据项放入到对应的父节点的 children 数组中
    copyList.forEach(item => {
      // 获取当前遍历项的父节点
      const parent = map.get(item.pid)
      // 如果父节点存在，则将当前遍历项放入到父节点的 children 数组中
      if (parent) {
        (parent.children || (parent.children = [])).push(item)
      } else {
        result.push(item)
      }
    })
    return result
  }
  